package com.stephen.redisdemo.atomic;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

/**
 * @author: stephen
 * @create: 2020-02-29 16:16
 * @description: 阻塞队列,put,take方法
 */
public class BlockQueueDemo3 {

    public static void main(String[] args) throws InterruptedException {
        // 声明阻塞队列时,要指明容量
        BlockingQueue<String> queue = new ArrayBlockingQueue<>(3);
        /**
         *  put添加元素时,无返回值
         *  若队列已满,不会抛异常,但会一直阻塞,程序不会停止
         */
        queue.put("a");
        queue.put("b");
        queue.put("c");
        // queue.put("d");

        /**
         * take取队列元素
         * 若队列为空,则会一直阻塞,程序不会停止
         */
        System.out.println(queue.take()); // a
        System.out.println(queue.take()); // b
        System.out.println(queue.take()); // c
        System.out.println(queue.take()); // 一直阻塞

    }

}
